package q116_connect;

public class Solution_4 {

    class Node {
        public int val;
        public Node left;
        public Node right;
        public Node next;

        public Node() {}

        public Node(int _val) {
            val = _val;
        }

        public Node(int _val, Node _left, Node _right, Node _next) {
            val = _val;
            left = _left;
            right = _right;
            next = _next;
        }
    };

    /**
     * 递归的方法也可以实现
     */
    public Node connect(Node root) {
        if(root == null){
            return root;
        }
        // 注意，这里由于是完美平衡二叉树，所以只需要判断root.left!=null
        // 然后在判断体内使用connect(root.left);和connect(root.right);就能够实现所有的连接
        if(root.left!=null){
            root.left.next = root.right;
            root.right.next = root.next != null ? root.next.left : null;

            connect(root.left);
            connect(root.right);
        }
        return root;
    }
}
